package com.example.myandroidapp.kotlin

/*
* list集合：
* ● listOf 声明一个不可变的集合
  ● mutableListOf 声明一个可变的集合
  *
  *
  * 特性	    listOf	                    mutableListOf
    可变性	只读（不可变）	                可变
    修改操作	❌ 禁止添加/删除/修改元素	    ✔️ 支持添加/删除/修改元素
    线程安全	天然线程安全	                非线程安全（需手动同步）
    使用场景	常量数据、配置项、只读数据源	    动态集合、需要修改的数据
    内存开销	更小	                        稍大
*/

fun main() {
    // 创建只读列表
    val colors = listOf("Red", "Green", "Blue")

    // 访问元素
    println("第一个颜色: ${colors[0]}")  // 输出: Red
    println("包含绿色吗? ${colors.contains("Green")}") // 输出: true

    // 尝试修改 - 会报编译错误
    // colors.add("Yellow")   // 错误！
    // colors[0] = "Crimson" // 错误！

    // 遍历
    println("\n所有颜色:")
    colors.forEach { println("- $it") }

    // 转换为可变列表
    val mutableColors = colors.toMutableList()
    mutableColors.add("Yellow")
    mutableColors.add("Crimson")
    println("\n所有颜色:")
    mutableColors.forEach { println("- $it") }


    // 创建可变列表
    val shoppingList = mutableListOf("苹果", "牛奶")
//    shoppingList.toList()

    // 添加元素
    shoppingList.add("面包")
    shoppingList.add(1, "鸡蛋") // 在索引1处插入

    // 修改元素
    shoppingList[0] = "有机苹果"

    // 删除元素
    shoppingList.remove("牛奶")
    shoppingList.removeAt(0) // 删除第一个元素

    println("\n购物清单:")
    shoppingList.forEachIndexed { index, item ->
        println("${index + 1}. $item")
    }
}
